package agent_handler

import (
	"peilian-api/app/global/bind"
	"peilian-api/app/global/errors"
	"peilian-api/app/model"
	"peilian-api/app/services/agent_service"
	"peilian-api/utils/format"

	"github.com/gin-gonic/gin"
)

// 后台客户设置 -- 添加客户信息
func AddAgent(ctx *gin.Context) {
	// 绑定参数
	var aar model.AgentAddReq
	if err := bind.ShouldBinding(ctx, &aar); err != nil {
		format.NewResponseJson(ctx).Err(30001, err.Error())
		return
	}
	err := new(agent_service.AgentService).AddAgent(ctx, aar)
	if err != nil {
		format.NewResponseJson(ctx).Err(err.Code, err.Err.Error())
		return
	}
	format.NewResponseJson(ctx).SuccessObj(make([]interface{}, 0))
}

// 更新客户信息
func UpdateAgent(ctx *gin.Context) {
	// 绑定参数 使用添加用户名信息
	var aur model.AgentUpdateReq
	if err := bind.ShouldBinding(ctx, &aur); err != nil {
		format.NewResponseJson(ctx).Err(30001, err.Error())
		return
	}
	err := agent_service.UpdateAgent(ctx, aur)
	if err != nil {
		format.NewResponseJson(ctx).Err(err.Code, err.Err.Error())
		return
	}
	format.NewResponseJson(ctx).Success(make([]interface{}, 0))
}

// 删除客户信息
func DeleteByIdAgent(ctx *gin.Context) {
	var ud model.AgentIdReq
	if err := bind.ShouldBinding(ctx, &ud); err != nil {
		format.NewResponseJson(ctx).Err(30001, err.Error())
		return
	}
	err := agent_service.DeleteAgentById(ctx, ud)
	if err != nil {
		format.NewResponseJson(ctx).Err(30001, err.Err.Error())
		return
	}
	format.NewResponseJson(ctx).Success(make([]interface{}, 0))
}

// 查询用户信息
func GetAgentList(ctx *gin.Context) {
	var agr model.AgentGetReq
	if err := bind.ShouldBinding(ctx, &agr); err != nil {
		format.NewResponseJson(ctx).Err(errors.PublicErrorCode, err.Error())
		return
	}
	out, count, _, err := agent_service.GetAgentList(ctx, agr, 0)
	if err != nil {
		format.NewResponseJson(ctx).Err(err.Code, err.Err.Error())
		return
	}
	if out == nil {
		format.NewResponseJson(ctx).SuccessDataList(0, out...)
		return
	}
	format.NewResponseJson(ctx).SuccessDataList(int(count), out)
}

// 查询用户信息
func GetAgentDetail(ctx *gin.Context) {
	var air model.AgentIdReq
	if err := bind.ShouldBinding(ctx, &air); err != nil {
		format.NewResponseJson(ctx).Err(errors.PublicErrorCode, err.Error())
		return
	}
	out, err := agent_service.GetAgentDetail(ctx, air)
	if err != nil {
		format.NewResponseJson(ctx).Err(err.Code, err.Err.Error())
		return
	}
	format.NewResponseJson(ctx).SuccessObj(out)
}

// 导出客户信息
func ExportInfo(ctx *gin.Context) {
	var agr model.AgentGetReq
	if err := bind.ShouldBinding(ctx, &agr); err != nil {
		format.NewResponseJson(ctx).Err(errors.PublicErrorCode, err.Error())
		return
	}
	agr.PageSize.Size = 0
	_, _, url, err := agent_service.GetAgentList(ctx, agr, 1)
	if err != nil {
		format.NewResponseJson(ctx).Err(err.Code, err.Err.Error())
		return
	}
	format.NewResponseJson(ctx).SuccessObj(struct {
		Url string `json:"url"`
	}{Url: url})
}
